﻿package com.bn.NNYY;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;

public class SingleFish {
	float x;//鱼图片的x坐标
	float y;//鱼图片的y坐标 
	Bitmap fish[];//鱼的位图
	int i;//控制鱼尾摆动的3张图片
	float degrees;//相对于鱼头向左，旋转的角度
	int count;//鱼走的步数
	int space;//鱼的步进大小
	int forwardstep;//鱼处于前进状态的步数
	int fishsign;//标识是大鱼、中鱼、小鱼(1、2、3)
	public SingleFish(Bitmap fish[],int space,int fishsign)//随机变换角度时再改
	{
		this.x=(float) ((Constant.SCREEN_WIDTH+50)*Math.random());  //鱼随机出现的位置
		this.y=(float) ((Constant.SCREEN_HEIGHT)*Math.random());
		this.fish=fish;
		this.i=0;
		this.count=0;
		this.space=space;
		this.degrees=(float) (2*Math.PI*Math.random());
		this.forwardstep=(int) (Constant.FORWARD_STEP+(Constant.FORWARD_MAX_STEP-Constant.FORWARD_STEP)*Math.random());
		this.fishsign=fishsign;
	}
	public SingleFish(Bitmap fish[],int space,float x,float y,float degrees)//将鱼放入渔网后，又重新放入水中时用
	{
		this.fish=fish;
		this.space=space;
		this.x=x;
		this.y=y;
		this.degrees=degrees;
		this.forwardstep=(int) (Constant.FORWARD_STEP+(Constant.FORWARD_MAX_STEP-Constant.FORWARD_STEP)*Math.random());
	}
	//绘制鱼的方法
	public void drawSelf(Canvas canvas,Paint paint,float offsetX,float offsetY)//绘制鱼的方法，继承该类的方法相同
	{
		Matrix m1=new Matrix();//图片旋转一定的角度
		m1.setRotate((float) Math.toDegrees(degrees), fish[i].getWidth()/2, fish[i].getHeight()/2);
		Matrix m2=new Matrix();//图片移动一定的距离
		m2.setTranslate(x+offsetX, y+offsetY);
		Matrix m3=new Matrix();//先移动图片再旋转图片
		m3.setConcat(m2, m1);
		canvas.drawBitmap(fish[i], m3, paint);//绘制旋转后的图片
	}
	public void fishGo()//鱼走的方法,鱼的步进不同
	{
		count++;//步数加1
		
		if(count<forwardstep)//前进状态
		{	//鱼前进
			x=(float) (x-space*Math.cos(Math.PI+degrees));
			y=(float) (y+space*Math.sin(Math.PI-degrees));
		}else if(count>=forwardstep&&count<=forwardstep+Constant.STOP_STEP)//停止状态
		{
			//鱼停止前进，直到步进为50时，继续前进
		}else if(count>forwardstep+Constant.STOP_STEP)//改变运动方向状态
		{
			//鱼改变状态
			if(Math.random()<=0.5)
			{
				degrees=(float) (degrees+(Math.PI/6)*Math.random());//改变状态后，旋转30度
				space=space+2;
			}else
			{
				degrees=(float) (degrees-(Math.PI/6)*Math.random());
				space=space+2;
			}
			count=0;
		}
	}
}
